1 module hip.api.assets.assets_binding; 2 public import hip.api.data.commons; 3 public import hip.api.data.asset; 4 public import hip.api.data.font; 5 public import hip.api.data.textureatlas; 6 public import hip.api.data.tilemap; 7 public import hip.api.renderer.texture; 8 9 version(ScriptAPI) 10 { 11 void initAssetManager() 12 { 13 import hip.api.internal; 14 loadClassFunctionPointers!(HipAssetsBinding, UseExportedClass.Yes, "HipAssetManager"); 15 import hip.api.console; 16 log("HipengineAPI: Initialized AssetManager"); 17 } 18 19 20 class HipAssetsBinding 21 { 22 extern(System) __gshared 23 { 24 ///Returns whether asset manager is loading anything 25 bool function(string file = __FILE__, uint line = __LINE__) isLoading; 26 27 ///Stops the code from running and awaits asset manager to finish loading 28 void function() awaitLoad; 29 30 ///Gets how many assets there is to load. 31 int function() getAssetsToLoadCount; 32 /** 33 * Used for creating procedurally generated Tilemap: 34 ```d 35 IHipTilemap map = HipAssetManager.createTilemap(200, 200, 1, 1); 36 map.addTileset(HipAssetManager.tilesetFromSpritesheet(mySpritesheet)); 37 HipTileLayer layer = map.addNewLayer("MyLayer", 200, 200); 38 //Define your tiles by accessing layer.tiles = [] 39 ``` 40 */ 41 IHipTilemap function(uint width, uint height, uint tileWidth, uint tileHeight, bool isInfinite = false) createTilemap; 42 43 /** 44 * Loads any type previously registered. 45 * Can be used for: 46 * - IImage 47 * - string 48 * - IHipINI 49 * - IHipTextureAtlas 50 * - IHipTexture 51 * - IHipTilemap 52 * - IHipTileset 53 * - IHipFont 54 */ 55 IHipAssetLoadTask function (TypeInfo tID, string path, const(ubyte)[] extraData = null, string file = __FILE__, size_t line = __LINE__) loadAsset; 56 57 /** 58 * Usage Example: 59 * registerAsset(typeid(Image), (string path, string f, size_t l) => new HipImageLoadTask(path,path,null,f,l)); 60 */ 61 void function(TypeInfo tID, IHipAssetLoadTask delegate(string path, const(ubyte)[] extraData, string file, size_t line) assetFactory) registerAsset; 62 63 64 /** 65 * Reserved for deferred loading. 66 * Use it on your own risk. 67 */ 68 void function (IHipAssetLoadTask task, void delegate(HipAsset) onComplete) addOnCompleteHandler; 69 70 HipAsset function(string name) getAsset; 71 string function(string name) getStringAsset; 72 73 version(Have_util) 74 { 75 public import hip.util.data_structures:Array2D, Array2D_GC; 76 IHipTileset function(Array2D_GC!IHipTextureRegion spritesheet) tilesetFromSpritesheet; 77 } 78 IHipTileset function(IHipTextureAtlas atlas) tilesetFromAtlas; 79 80 //TODO: IHipAssetLoadTask function(string path) loadHapFile; 81 } 82 } 83 import hip.api.internal; 84 mixin ExpandClassFunctionPointers!HipAssetsBinding; 85 } 86 87 88 89 90 T get(T)(string name){return cast(T)getAsset(name); } 91 T get(T : string)(string name){return cast(T)getStringAsset(name);}